package implementation;
import intface1.*;
import javafx.scene.control.Button;

import javax.swing.*;
import java.awt.*;
import java.awt.geom.RoundRectangle2D;

import gui.UI;

public class NewButton extends JButton{

    private Shape shape = null;
    //构造方法
    public NewButton() {
        super();
        setFocusPainted(false);
        setBorderPainted(false);//设置边框不显示
        setContentAreaFilled(false);// 是否显示外围矩形区域以及原背景 选否
    }

    public NewButton(String name) {
        super(name);
        setFocusPainted(false);
        setBorderPainted(false);//设置边框不显示
        setContentAreaFilled(false);// 是否显示外围矩形区域 选否
    }

    public NewButton(ImageIcon imageIcon,ImageIcon imageIcon2,Dimension size) {
        super(imageIcon);
        setPreferredSize(size);
        setRolloverIcon(imageIcon2);
        setFocusPainted(false);//设置点击后焦点不显示
        setBorderPainted(false);//设置边框不显示
        setContentAreaFilled(false);// 是否显示外围矩形区域 选否

    }

    public NewButton(String name,ImageIcon imageIcon) {
        super(name,imageIcon);
        setOpaque(true);
        setFocusPainted(false);
        setBorderPainted(false);//设置边框不显示
        setContentAreaFilled(false);// 是否显示外围矩形区域 选否
    }


    public NewButton(String name, ImageIcon imageIcon,Dimension size) {
        super(name,imageIcon);
        setPreferredSize(size);//设置首选大小
        setFocusPainted(false);//设置点击后焦点不显示
        setBorderPainted(false);//设置边框不显示
        setContentAreaFilled(false);//设置不显示按钮背景

    }

    //重写方法

    public void paintComponent(Graphics g) {//控制button的填充色
        // 如果按下则为ＣＬＩＣＫ色 否则为 ＱＵＩＴ色
        if (getModel().isArmed()) {
            g.setColor(UI.BUTTON_CLICK);
        } else {
            g.setColor(UI.BUTTON);
        }
        // 填充圆角矩形区域 也可以为其它的图形
        g.fillRoundRect(0, 0, getSize().width - 1, getSize().height - 1, UI.ARC_WIDTH, UI.ARC_HEIGHT);
        // 必须放在最后 否则画不出来
        super.paintComponent(g);
    }

    public void paintBorder(Graphics g) {//控制button的边框
        // 画边界区域
        // g.setColor(UI.BUTTON_CLICK);
        // g.drawRoundRect(0, 0, getSize().width - 1, getSize().height - 1, UI.ARC_WIDTH, UI.ARC_HEIGHT);
    }

    public boolean contains(int x, int y) {
        // 判断点（x,y）是否在按钮内
        if (shape == null || !(shape.getBounds().equals(getBounds()))) {
            shape = new RoundRectangle2D.Double(0, 0, getWidth(), getHeight(), UI.ARC_WIDTH, UI.ARC_HEIGHT);
        }
        //判断边框是否为空或者边框不等于边框
        return shape.contains(x, y);//调用父级的本方法返回值
    }

}
